home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 March / CMCD0305.ISO / Software / Shareware / Utilitare / emu / Emu8086_Setup_307c.exe / {app} / Samples / stack.asm < prev    next >
Assembly Source File  |  2002-08-02  |  980b  |  71 lines

  1. ; This sample shows how the
  2. ; stack works. Click "Stack"
  3. ; button in emulator to see
  4. ; the contents of the stack.
  5.  
  6. #MAKE_COM#
  7.  
  8. ; This code does nothing
  9. ; useful, except printing
  10. ; "Hi" in the end.
  11.  
  12. ; COM file is loaded at 100h
  13. ; prefix:
  14. ORG     100h
  15.  
  16. MOV     AX, 1234h
  17. PUSH    AX
  18.  
  19. MOV     DX, 5678h
  20. PUSH    DX
  21.  
  22. POP     BX
  23. POP     CX
  24.  
  25. ; function call pushes
  26. ; IP value of the next
  27. ; instruction:
  28.  
  29. CALL    tfunc
  30.  
  31. MOV     AX, 7890h
  32. PUSH    AX
  33. POP     BX
  34.  
  35. ; A typical use of
  36. ; stack is to set segment
  37. ; registers.
  38. ; set DS to video
  39. ; memory segment:
  40.  
  41. MOV     AX, 0B800h
  42. PUSH    AX
  43. POP     DS
  44.  
  45. ; print "Hi":
  46. MOV     [170h], 'H'
  47. MOV     [172h], 'i'
  48.  
  49. ; color attribute for 'H'
  50. MOV     [171h], 11001110b
  51.  
  52. ; color attribute for 'i'
  53. MOV     [173h], 10011110b
  54.  
  55. RET
  56.  
  57. ; the test procedure:
  58.  
  59. tfunc   PROC    NEAR
  60.  
  61.         XOR     BX, BX
  62.         XOR     CX, CX
  63.  
  64. ; here we "pop" the IP
  65. ; value:
  66.  
  67.         RET
  68. tfunc   ENDP
  69.  
  70. END
  71.